%module OgreImage

%{
#include "OGRE/OgreImage.h"
	%}

%import "OgrePrerequisites.i"

 //#include "OgreCommon.h"
 %import "OgrePixelFormat.i"
 //#include "OgreDataStream.h"

namespace Ogre {

    enum ImageFlags
    {
        IF_COMPRESSED = 0x00000001,
        IF_CUBEMAP    = 0x00000002,
        IF_3D_TEXTURE = 0x00000004
    };

    class Image //: public ImageAlloc
    {
    public:
    	typedef Ogre::Box Box;
    	typedef Ogre::Rect Rect;

        Image & operator = ( const Image & img );

        Image & flipAroundY();

        Image & flipAroundX();

        Image & load( const String& strFileName, const String& groupName );

        void save(const String& filename);

//        uchar* getData(void);
//        const uchar * getData() const;       

        size_t getSize() const;
        size_t getNumMipmaps() const;
        bool hasFlag(const ImageFlags imgFlag) const;

        size_t getWidth(void) const;
        size_t getHeight(void) const;
        size_t getDepth(void) const;
		
        PixelFormat getFormat() const;

        uchar getBPP() const;

        bool getHasAlpha() const;
    };
} // namespace
